﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>万年历</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//日期数据
var lunarInfo=new Array(
0x4bd8,0x4ae0,0xa570,0x54d5,0xd260,0xd950,0x5554,0x56af,0x9ad0,0x55d2,
0x4ae0,0xa5b6,0xa4d0,0xd250,0xd295,0xb54f,0xd6a0,0xada2,0x95b0,0x4977,
0x497f,0xa4b0,0xb4b5,0x6a50,0x6d40,0xab54,0x2b6f,0x9570,0x52f2,0x4970,
0x6566,0xd4a0,0xea50,0x6a95,0x5adf,0x2b60,0x86e3,0x92ef,0xc8d7,0xc95f,
0xd4a0,0xd8a6,0xb55f,0x56a0,0xa5b4,0x25df,0x92d0,0xd2b2,0xa950,0xb557,
0x6ca0,0xb550,0x5355,0x4daf,0xa5b0,0x4573,0x52bf,0xa9a8,0xe950,0x6aa0,
0xaea6,0xab50,0x4b60,0xaae4,0xa570,0x5260,0xf263,0xd950,0x5b57,0x56a0,
0x96d0,0x4dd5,0x4ad0,0xa4d0,0xd4d4,0xd250,0xd558,0xb540,0xb6a0,0x95a6,
0x95bf,0x49b0,0xa974,0xa4b0,0xb27a,0x6a50,0x6d40,0xaf46,0xab60,0x9570,
0x4af5,0x4970,0x64b0,0x74a3,0xea50,0x6b58,0x5ac0,0xab60,0x96d5,0x92e0,
0xc960,0xd954,0xd4a0,0xda50,0x7552,0x56a0,0xabb7,0x25d0,0x92d0,0xcab5,
0xa950,0xb4a0,0xbaa4,0xad50,0x55d9,0x4ba0,0xa5b0,0x5176,0x52bf,0xa930,
0x7954,0x6aa0,0xad50,0x5b52,0x4b60,0xa6e6,0xa4e0,0xd260,0xea65,0xd530,
0x5aa0,0x76a3,0x96d0,0x4afb,0x4ad0,0xa4d0,0xd0b6,0xd25f,0xd520,0xdd45,
0xb5a0,0x56d0,0x55b2,0x49b0,0xa577,0xa4b0,0xaa50,0xb255,0x6d2f,0xada0,
0x4b63,0x937f,0x49f8,0x4970,0x64b0,0x68a6,0xea5f,0x6b20,0xa6c4,0xaaef,
0x92e0,0xd2e3,0xc960,0xd557,0xd4a0,0xda50,0x5d55,0x56a0,0xa6d0,0x55d4,
0x52d0,0xa9b8,0xa950,0xb4a0,0xb6a6,0xad50,0x55a0,0xaba4,0xa5b0,0x52b0,
0xb273,0x6930,0x7337,0x6aa0,0xad50,0x4b55,0x4b6f,0xa570,0x54e4,0xd260,
0xe968,0xd520,0xdaa0,0x6aa6,0x56df,0x4ae0,0xa9d4,0xa4d0,0xd150,0xf252,
0xd520);

var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
var nStr2 = new Array('初','十','廿','卅','卌');
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

//公历节日 *表示放假日
var sFtv = new Array(
"0101*新年元旦",
"0106 中国13亿人口日[2005]",
"0108 周恩来逝世纪念日[1976]",
"0121 列宁逝世纪念日[1924]",
"0127 宋庆龄诞辰纪念日[1893]",
//-
"0202 世界湿地日[1996]",
"0207 国际声援南非日[1964]",
"0210 世界气象日[1960]",
"0214 西方情人节",
"0215 中国12亿人口日[1995]",
"0219 邓小平逝世纪念日[1997]",
"0221 反对殖民制度斗争日[1949]",
"0224 第三世界青年日",
"0228 世界居住条件调查日",
//-
"0301 国际海豹日[1983]",
"0303 全国爱耳日[2000]",
"0305 中国青年志愿者服务日[2000] 毛泽东题词“向雷锋同志学习”[1963] 周恩来诞辰纪念日[1898] 斯大林逝世纪念日[1953]",
"0308 国际妇女节[1910]",
"0312 中国植树节[1979] 孙中山逝世纪念日",
"0314 国际警察日(节) 马克思逝世纪念日[1883]",
"0315 国际消费者权益日[1983]",
"0316 手拉手情系贫困小伙伴全国统一行动日",
"0317 中国国医节[1929] 国际航海日",
"0318 全国科技人才活动日 巴黎公社纪念日[1871]",
"0321 世界睡眠日[2001] 世界儿歌日 世界森林日(林业节)[1972] 消除种族歧视国际日[1976]",
"0322 世界水日[1993] 中国水周(3月22日至3月28日)[1988设/1994改]",
"0323 世界气象日[1950]",
"0324 世界防治结核病日[1996]",
"0330 巴勒斯坦国土日",
//-
"0401 国际愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月)",
"0402 国际儿童图书日",
"0407 世界卫生日[1950] 1994年卢旺达境内灭绝种族罪行国际反思日[2004]",
"0421 全国企业家活动日[1994]",
"0422 世界地球日[1970] 列宁诞辰纪念日[1870]",
"0423 世界图书和版权日",
"0424 世界青年反对殖民主义日[1957] 亚非新闻工作者日",
"0425 全国预防接种宣传日[1986]",
"0426 世界知识产权日[2001]",
"0427 联谊城日",
"0430 全国交通安全反思日",
//-
"0501*国际劳动节[1889] 国际示威游行日",
"0503 世界哮喘日",
"0504 中国五四青年节[1939] 五四运动纪念日[1919] 科技传播日",
"0505 全国碘缺乏病防治日[1994] 马克思诞辰纪念日[1818]",
"0508 世界红十字日[1948] 世界微笑日",
"0512 国际护士节[1912]",
"0515 国际家庭(咨询)日[1994]",
"0517 世界电信日[1969]",
"0518 国际博物馆日",
"0520 全国母乳喂养宣传日[1990] 全国学生营养日[1990]",
"0522 国际生物多样性日[1994设/2001改]",
"0526 世界向人体条件挑战日[1993]",
"0529 宋庆龄逝世纪念日[1981]",
"0530 “五卅”反对帝国主义运动纪念日[1925]",
"0531 世界无烟日[1988]", 
//
"0601 国际儿童节[1949]",
"0605 世界环境日[1974]",
"0606 全国爱眼日[1996]",
"0611 中国人口日",
"0617 世界防止荒漠化和干旱日[1995]",
"0620 世界难民日[2001]",
"0622 中国儿童慈善活动日",
"0623 国际奥林匹克日[1894] 世界手球日",
"0625 全国土地日[1991]",
"0626 国际禁毒日(国际反毒品日)[1987] 国际宪章日(联合国宪章日)",
"0630 世界青年联欢节",
//-
"0701 中国共产党建党纪念日[1921] 香港回归纪念日[1997] 国际建筑日[1985] 亚洲“三十亿人口日”[1988]",
"0702 国际体育记者日 精品推介站(21softs.com)正式开放纪念日[2001]",
"0706 朱德逝世纪念日[1976]",
"0707 中国人民抗日战争纪念日[1937]",
"0711 中国航海日[2005] 世界(50亿)人口日[1987]",
"0720 人类首次成功登月[1969]",
"0726 世界语(言)创立日",
"0728 第一次世界大战爆发[1914]",
"0730 非洲妇女日",
//-
"0801 中国人民解放军建军节[1927]",
"0805 恩格斯逝世纪念日[1895]",
"0806 国际电影节[1932]",
"0808 中国男子节(爸爸节)[1988]",
"0809 世界土著人民国际日[1994]",
"0812 国际青年人日[1999]",
"0813 国际左撇子日[1975设/1976]",
"0815 日本正式宣布无条件投降日[1945] 世界反法西斯战争胜利纪念日[1945]",
"0826 全国律师咨询日[1993]",
//-
"0903 中国抗日战争胜利纪念日[1945]",
"0908 世界扫盲日[1966] 国际新闻工作者(团结)日[1958]",
"0909 毛泽东逝世纪念日[1976]",
"0910 中国教师节[1985]",
"0914 世界清洁地球日",
"0916 国际臭氧层保护日[1987]",
"0918 “九·一八”事变纪念日(中国国耻日)[1931]",
"0920 全国公民道德宣传日[2003] 全国爱牙日[1989]",
"0921 国际和平日(全球停火和非暴力日,2002年以后)[2002]",
"0925 鲁迅诞辰纪念日[1881]",
"0926 (曲阜国际)孔子文化节[1989]",
"0927 世界旅游日[1979]",
//-
"1001*国庆节[1949] 国际音乐日[1980] 国际敬老日(老人节)[1991]",
"1002 国际和平(与民主自由)斗争日[1949]",
"1004 世界动物日[1949]",
"1008 全国高血压日[1998] 狮子会世界视觉日[1998]",
"1009 世界邮政日(万国邮联日)[1969]",
"1010 辛亥革命纪念日[1911] 世界精神卫生日[1992] 世界居室卫生日",
"1011 声援南非政治犯日",
"1012 世界(60亿)人口日[1999]",
"1013 中国少年先锋队建队纪念日[1949] 世界保健日 国际教师节 采用格林威治时间为国际标准时间日[1884]",
"1014 世界标准日[1969]",
"1015 国际盲人节(白手杖节)[1984]",
"1016 世界粮食日[1979]",
"1017 消除贫穷国际日[1992]",
"1019 鲁迅逝世纪念日[1936]",
"1022 世界传统医药日[1992]",
"1024 联合国日[1945] 世界发展信息日",
"1028 世界“男性健康日”[2000]",
"1031 世界勤俭日",
//-
"1107 十月社会主义革命纪念日(现俄“和谐和解日”)[1917]",
"1108 中国记者日[2000]",
"1109 中国消防宣传日(消防节, 全国消防安全宣传教育日)[1992]",
"1110 世界青年节(日)[1946]",
"1111 国际科学与和平周(本日所属的一周)",
"1112 孙中山诞辰纪念日[1866, 1926定] 刘少奇逝世纪念日[1969]",
"1114 世界糖尿病日[1991]",
"1117 国际大学生节(世界学生节)[1946]",
"1120 世界儿童日[1986]",
"1121 世界问候日[1973] 世界电视日[1996]",
"1124 刘少奇诞辰纪念日[1893]",
"1128 恩格斯诞辰纪念日[1820]",
"1129 国际声援巴勒斯坦人民国际日[1977]",
//-
"1201 世界艾滋病日[1988] 朱德诞辰纪念日[1886]",
"1202 废除一切形式奴役世界日[1986]",
"1203 世界残疾人日[1992]",
"1204 中国法制宣传日[2001]",
"1205 国际经济和社会发展志愿人员日[1985] 世界弱能人士日",
"1207 国际民航日[纪念1994, 1996定]",
"1209 “一二·九”运动纪念日[1935] 世界足球日[1995]",
"1210 世界人权日(诺贝尔日)[1950]",
"1211 世界防治哮喘日[1998]",
"1212 西安事变纪念日[1936]",
"1213 南京大屠杀纪念日·勿忘国耻,紧记血泪史![1937]",
"1215 世界强化免疫日",
"1220 澳门回归纪念日[1999]",
"1221 国际篮球日 斯大林诞辰纪念日[1879]",
"1224 平安夜",
"1225 圣诞节 毛泽东诞辰纪念日[1893]");

//某月的第几个星期几。 5,6,7,8 表示到数第 1,2,3,4 个星期几
var wFtv = new Array(
"0110 黑人日",
"0150 国际麻风节(世界防治麻风病日)[1954]", //一月的最后一个星期日（月倒数第一个星期日）
"0351 全国中小学生安全教育日[1996]",
"0430 世界儿童日[1986]",
"0453 秘书节",
"0520 国际母亲节[1914] 救助贫困母亲日[1997]",
"0530 全国助残日[1990]",
"0532 国际牛奶日[1961]",
"0630 父亲节",
"0716 国际合作节",
"0911 美国劳动节[1894]",
"0932 国际和平日(1981至2001年)[1981]",
"0936 全民国防教育日[2001]",
"0940 国际聋人节[1958]",
"0950 世界海事日[1978] 世界心脏日[2000]",
"1011 世界人居日(国际住房日)[1985]",
"1013 国际减轻自然灾害日(减灾日)[1990]",
"1144 感恩节",
"1220 国际儿童电视广播日");

//农历节日
var lFtv = new Array(
"0101*春节",
"0115 元宵节(中国情人节) 壮族歌墟节 朝鲜族上元节 苗族踩山节 达翰尔族卡钦",
"0116 侗族芦笙节(正月十六至二十)",
"0125 填仓节",
"0129 送穷日",
"0201 瑶族忌鸟节",
"0202 春龙节(龙抬头节) 畲族会亲节",
"0208 傈傈族刀杆节",
"0315 白族三月街(三月十五至廿一)",
"0323 妈祖生辰 (天上圣母诞辰)",
"0408 牛王诞",
"0418 锡伯族西迁节",
"0505*端午节 黎族朝花节 苗族龙船年",
"0513 阿昌族泼水节",
"0522 鄂温克族米阔鲁节",
"0529 瑶族达努节",
"0606 姑姑节 天贶节 壮族祭田节 瑶族尝新节",
"0624 彝族、阿昌族、白族、佤族、纳西族、基诺族火把节",
"0707 七七中国情人节(女儿节, 乞巧节)",
"0713 侗族吃新节",
"0715 中元节 盂兰盆会 普米族转山会",
"0815*中秋节 拉祜族尝新节",
"0909 重阳节 中国老年节(义务助老活动日)[1989]",
"1001 祭祖节(十月朝)",
"1016 瑶族盘王节",
"1208 腊八节",
"1223 北方灶君节[北方小年(扫房日)]",
"1224 南方祭灶节[南方小年(掸尘日)]",
"0100*除夕");

//世界时间资料
var timeData = {
"Asia (East, North) 东亚、北亚": { 
"Brunei             文莱    ":["+0800","","斯里巴加湾市"],
"Burma              缅甸    ":["+0630","","仰光"],
"Cambodia           柬埔寨  ":["+0700","","金边"],
"China              中国　　":["+0800","","北京、重庆、上海、天津"],
"China(HK,Macau)    中国香港、澳门":["+0800","","香港、澳门特区"],
"China(TaiWan)      中国台北":["+0800","","台北、高雄"],
"China(Urumchi)     中国乌鲁木齐":["+0700","","乌鲁木齐"],
"East Timor         东帝汶":["+0800","","帝力"],
"Indonesia          印尼    ":["+0700","","雅加达"],
"Japan              日本    ":["+0900","","东京、大阪、札幌"],
"Kazakhstan(Aqtau)  哈萨克斯坦":["+0400","","阿克图"],
"Kazakhstan(Aqtobe) 哈萨克斯坦":["+0500","","阿克托别"],
"Kazakhstan(Astana) 哈萨克斯坦":["+0600","","阿斯塔纳、阿拉木图"],
"Kirghizia          吉尔吉斯":["+0500","","比斯凯克"],
"Korea              韩国    ":["+0900","","汉城"],
"Laos               老挝    ":["+0700","","万象"],
"Malaysia           马来西亚":["+0800","","吉隆坡"],
"Mongolia           蒙古    ":["+0800","03L03|09L03","乌兰巴托、库伦"],
"Philippines        菲律宾  ":["+0800","04F53|10F53","马尼拉"],
"Russia(Anadyr)     俄罗斯  ":["+1300","03L03|10L03","阿纳德尔河"],
"Russia(Kamchatka)  俄罗斯  ":["+1200","03L03|10L03","堪察加半岛"],
"Russia(Magadan)    俄罗斯  ":["+1100","03L03|10L03","马加丹"],
"Russia(Vladivostok)俄罗斯  ":["+1000","03L03|10L03","符拉迪沃斯托克(海参崴)"],
"Russia(Yakutsk)    俄罗斯  ":["+0900","03L03|10L03","雅库茨克"],
"Singapore          新加坡  ":["+0800","","新加坡"],
"Thailand           泰国    ":["+0700","","曼谷"],
"Vietnam            越南    ":["+0700","","河内"]
},
"Asia (South, West) 南亚、中亚、西亚": {
"Afghanistan        阿富汗  ":["+0430","","喀布尔"],
"Arab Emirates      阿拉伯联合酋长国":["+0400","","阿布扎比"],
"Bahrain            巴林    ":["+0300","","麦纳麦"],
"Bangladesh         孟加拉  ":["+0600","","达卡"],
"Bhutan             不丹    ":["+0600","","廷布"],
"Cyprus             塞浦路斯":["+0200","","尼科西亚"],
"Georgia            乔治亚  ":["+0500","","第比利斯"],
"India              印度    ":["+0530","","新德里、孟买、加尔各答"],
"Iran               伊朗    ":["+0330","04 13|10 13","德黑兰"],
"Iraq               伊拉克  ":["+0300","04 13|10 13","巴格达"],
"Israel             以色列  ":["+0200","04F53|09F53","耶路撒冷"],
"Jordan             约旦    ":["+0200","","安曼"],
"Kuwait             科威特  ":["+0300","","科威特城"],
"Lebanon            黎巴嫩  ":["+0200","03L03|10L03","贝鲁特"],
"Maldives           马尔代夫":["+0500","","马累"],
"Nepal              尼泊尔  ":["+0545","","加德满都"],
"Oman               阿曼    ":["+0400","","马斯喀特"],
"Pakistan           巴基斯坦":["+0500","","卡拉奇、伊斯兰堡"],
"Palestine          巴勒斯坦":["+0200","","耶路撒冷"],
"Qatar              卡塔尔  ":["+0300","","多哈"],
"Saudi Arabia       沙特阿拉伯":["+0300","","利雅得"],
"Sri Lanka          斯里兰卡":["+0600","","科伦坡"],
"Syria              叙利亚  ":["+0200","04 13|10 13","大马士革"],
"Tajikistan         塔吉克斯坦":["+0500","","杜尚别"],
"Turkey             土耳其  ":["+0200","","伊斯坦堡"],
"Turkmenistan       土库曼斯坦":["+0500","","阿什哈巴德"],
"Uzbekistan         乌兹别克斯坦":["+0500","","塔什干"],
"Yemen              也门    ":["+0300","","萨那"]
},
"North Europe       北欧": {
"Denmark            丹麦":["+0100","04F03|10L03","哥本哈根"],
"Faroe Is.(DK)      法罗群岛(丹麦)":["+0100","","托尔斯港"],
"Finland            芬兰":["+0200","03L01|10L01","赫尔辛基"],
"Iceland            冰岛":["+0000","","雷克雅未克"],
"Jan Mayen(Norway)  扬马延岛(挪威)":["-0100","","扬马延岛"],
"Norwegian          挪威":["+0100","","奥斯陆"],
"Svalbard(NORWAY)   斯瓦尔巴群岛(挪威)":["+0100","","朗伊尔城"],
"Sweden             瑞典":["+0100","03L01|10L01","斯德哥尔摩"]
},
"Eastern Europe     中欧、东欧": {
"Armenia            亚美尼亚":["+0400","","埃里温"],
"Austria            奥地利  ":["+0100","03L01|10L01","维也纳"],
"Azerbaijan         阿塞拜疆":["+0400","","巴库"],
"Belarus            白俄罗斯":["+0200","03L03|10L03","明斯克"],
"Czech              捷克    ":["+0100","","布拉格"],
"Estonia            爱沙尼亚":["+0200","","塔林"],
"Georgia            乔治亚  ":["+0500","","第比利斯"],
"Germany            德国    ":["+0100","03L01|10L01","柏林、波恩"],
"Hungarian          匈牙利  ":["+0100","","布达佩斯"],
"Latvia             拉脱维亚":["+0200","","里加"],
"Liechtenstein      列支敦士登":["+0100","","瓦都兹"],
"Lithuania          立陶宛  ":["+0200","","维尔纽斯"],
"Moldova            摩尔多瓦":["+0200","","基希纳乌"],
"Poland             波兰    ":["+0100","","华沙"],
"Rumania            罗马尼亚":["+0200","","布加勒斯特"],
"Russia(Moscow)     俄罗斯  ":["+0300","03L03|10L03","莫斯科、伏尔加格勒"],
"Slovakia           斯洛伐克":["+0100","","布拉迪斯拉发"],
"Switzerland        瑞士    ":["+0100","03L01|10L01","苏黎世"],
"Ukraine            乌克兰  ":["+0200","","基辅"],
"Ukraine(Simferopol)乌克兰  ":["+0300","","辛菲罗波尔"]
},
"Western Europe     西欧": {
"Andorra            安道尔 ":["+0100","03L01|10L01","安道尔"],
"Belgium            比利时 ":["+0100","03L01|10L01","布鲁塞尔"],
"Channel Is.(UK)    海峡群岛(英)":["+0000","03L01|10L01","根西岛、泽西岛"],
"France             法国   ":["+0100","03L01|10L01","巴黎"],
"Gibraltar(UK)      直布罗陀(英)":["+0100","03L01|10L01","直布罗陀"],
"Ireland            爱尔兰 ":["+0000","03L01|10L01","都柏林"],
"Isle of Man(UK)    马恩岛(曼岛、人岛)(英)":["+0000","03L01|10L01","道格拉斯"],
"Luxembourg         卢森堡 ":["+0100","03L01|10L01","卢森堡市"],
"Monaco             摩纳哥 ":["+0100","","摩纳哥市"],
"Netherlands        荷兰   ":["+0100","03L01|10L01","阿姆斯特丹"],
"United Kingdom     英国   ":["+0000","03L01|10L01","伦敦、爱丁堡"]
},
"South Europe       南欧": {
"Albania            阿尔巴尼亚":["+0100","","地拉那"],
"Bosnia             波士尼亚":["+0100","","塞拉耶佛"],
"Bulgaria           保加利亚":["+0200","","索菲亚"],
"Croatia            克罗地亚":["+0100","","萨格勒布"],
"Greece             希腊    ":["+0200","03L01|10L01","雅典"],
"Holy See           罗马教廷":["+0100","","梵蒂冈"],
"Italy              意大利  ":["+0100","03L01|10L01","罗马"],
"Macedonia          马其顿  ":["+0100","","斯科普里"],
"Malta              马耳他  ":["+0100","","瓦莱塔"],
"Portugal           葡萄牙  ":["+0000","03L01|10L01","里斯本"],
"San Marino         圣马利诺":["+0100","","圣马利诺"],
"Slovenia           斯洛文尼亚":["+0100","","卢布尔雅那"],
"Span               西班牙  ":["+0100","03L01|10L01","马德里"],
"Yugoslavia         南斯拉夫(塞尔维亚)":["+0100","","贝尔格莱德"]
},
"North America      北美洲": {
"Canada(AST)        加拿大":["-0400","04F02|10L02","冰河湾、Pangnirtung"],
"Canada(CST)        加拿大":["-0600","04F02|10L02","雷迦納、雨河鎮、激流(Swift Current)市"],
"Canada(EST)        加拿大":["-0500","04F02|10L02","蒙特罗"],
"Canada(MST)        加拿大":["-0700","04F02|10L02","印奴维特港湾、埃德蒙顿、道森河"],
"Canada(NST)        加拿大":["-0330","04F02|10L02","纽芬兰、圣约翰、古斯湾"],
"Canada(PST)        加拿大":["-0800","04F02|10L02","温哥华"],
"Greenland(DK)      格陵兰(丹麦)":["-0300","","努克"],
"US(Alaska)         美国      ":["-0900","","阿拉斯加、朱诺"],
"US(Arizona)        美国      ":["-0700","","亚历桑那"],
"US(Central)        美国(中部)":["-0600","04F02|10L02","芝加哥"],
"US(Eastern)        美国(东岸)":["-0500","04F02|10L02","华盛顿、纽约"],
"US(Indiana)        美国      ":["-0500","","印第安纳"],
"US(Mountain)       美国(山区)":["-0700","04F02|10L02","丹佛"],
"US(Pacific)        美国(西岸)":["-0800","04F02|10L02","旧金山、洛杉矶"]
},
"South America      中南美洲": {
"Anguilla(UK)       安圭拉(英)":["-0400","","瓦利"],
"Antigua & Barbuda  安提瓜岛及巴布达岛":["-0400","","圣约翰"],
"Antilles(NL)       安的列斯(荷)":["-0400","","威廉斯塔德"],
"Argentina          阿根廷  ":["-0300","","布宜诺斯艾利斯"],
"Aruba(NL)          阿鲁巴(荷兰)":["-0400","","奥拉涅斯塔德"],
"Bahamas            巴哈马  ":["-0500","","拿骚"],
"Barbados           巴巴多斯岛":["-0400","","布里奇顿(桥镇)"],
"Belize             贝里斯  ":["-0600","","贝里斯"],
"Bolivia            玻利维亚":["-0400","","拉巴斯"],
"Brazil(AST)        巴西    ":["-0500","10F03|02L03","Porto Acre"],
"Brazil(EST)        巴西    ":["-0300","10F03|02L03","巴西利亚、里约热内卢"],
"Brazil(FST)        巴西    ":["-0200","10F03|02L03","诺罗纳"],
"Brazil(WST)        巴西    ":["-0400","10F03|02L03","库亚巴"],
"British Virgin Is.(UK)维尔京群岛(英)":["-0400","","罗德城"],
"Cayman Is.(UK)     开曼群岛(英)":["-0500","","乔治敦"],
"Chilean            智利    ":["-0300","10F03|03F03","圣地亚哥"],
"Chilean            智利    ":["-0500","10F03|03F03","汉加罗亚"],
"Colombia           哥伦比亚":["-0500","","波哥大"],
"Costa Rica         哥斯达黎加":["-0600","","圣何塞"],
"Cuba               古巴    ":["-0500","04 13|10L03","哈瓦那"],
"Dominican          多米尼加":["-0400","","圣多明各、罗梭"],
"Ecuador            厄瓜多尔":["-0500","","基多"],
"El Salvador        萨尔瓦多":["-0600","","圣萨尔瓦多"],
"Falklands          福克兰群岛":["-0300","09F03|04F03","史丹利"],
"Grenada            格林纳达":["-0400","","圣乔治"],
"Guadeloupe(FR)     瓜德罗普(法)":["-0400","","巴斯特尔"],
"Guatemala          危地马拉":["-0600","","危地马拉城"],
"Guiana(FR)         圭亚那(法)":["-0300","","卡宴"],
"Guyana             圭亚那  ":["-0400","","佐治敦"],
"Haiti              海地    ":["-0500","","太子港"],
"Honduras           洪都拉斯":["-0600","","特古西加尔巴"],
"Jamaica            牙买加  ":["-0500","","金斯敦"],
"Martinique(FR)     马提尼克(法)":["-0400","","法兰西堡"],
"Mexico(Mazatlan)   墨西哥  ":["-0700","","马萨特兰"],
"Mexico(蒂华纳)     墨西哥  ":["-0800","","蒂华纳"],
"Mexico(首都)       墨西哥  ":["-0600","","墨西哥城"],
"Montserrat(UK)     蒙特塞拉特(英)":["-0400","","普利茅斯"],
"Nicaragua          尼加拉瓜":["-0500","","马那瓜"],
"Panama             巴拿马  ":["-0500","","巴拿马市"],
"Paraguay           巴拉圭  ":["-0400","10F03|02L03","亚松森"],
"Peru               秘鲁    ":["-0500","","利马"],
"Puerto Rico(US)    波多黎各(美)":["-0400","","圣胡安"],
"So. Georgia & So. Sandwich Is.(UK)南乔治和南三明治群岛(英)":["-0200","","葛利特维根"],
"St. Kitts & Nevis  圣克里斯多福及尼维斯":["-0400","","巴士地"],
"St. Lucia          圣卢西亚":["-0400","","卡斯特里"],
"St. Vincent & Grenadines圣文森特和格林纳丁斯":["-0400","","金斯敦"],
"Suriname           苏里南":["-0300","","帕拉马里博(Paramaribo)"],
"Trinidad & Tobago  特立尼达和多巴哥":["-0400","","西班牙港"],
"Turks & Caicos Is.(UK)特克斯和凯科斯群岛(英)":["-0500","","科伯恩城"],
"Uruguay            乌拉圭  ":["-0300","","蒙得维的亚"],
"Venezuela          委内瑞拉":["-0400","","加拉加斯"],
"Virgin Is.(US)     维尔京群岛(美)":["-0400","","夏洛特.阿马里"]
},
"Africa (North)     北非": {
"Algeria            阿尔及利亚":["+0100","","阿尔及尔"],
"Egypt              埃及    ":["+0200","04L53|09L43","开罗"],
"Libyan             利比亚  ":["+0200","","的黎波里、锡尔特市(新首都)"],
"Morocco            摩洛哥  ":["+0000","","拉巴特、卡萨布兰卡"],
"Sudan              苏丹    ":["+0200","","喀土穆"],
"Tunisia            突尼斯":["+0100","","突尼斯"]
},
"Africa (Western)   西非": {
"Benin              贝宁    ":["+0100","","波多诺伏、科托努、新港"],
"Burkina Faso       布吉纳法索":["+0000","","瓦加杜古"],
"Canary Is.(SP)     加那利群岛(西班牙)":["-0100","","乔治城"],
"Cape Verde         佛得角群岛":["-0100","","普拉亚"],
"Chad               乍得    ":["+0100","","恩贾梅纳"],
"Gambia             冈比亚  ":["+0000","","班珠尔"],
"Ghana              加纳    ":["+0000","","阿克拉"],
"Guinea             几内亚  ":["+0000","","科纳克里"],
"Guinea-Bissau      几内亚比绍":["+0000","","比绍"],
"Ivory Coast        象牙海岸":["+0000","","亚穆苏克罗、阿比让"],
"Liberia            利比里亚":["+0000","","蒙罗维亚"],
"Mali               马里    ":["+0000","","巴马科"],
"Mauritania         毛里塔尼亚":["+0000","","努瓦克肖特"],
"Niger              尼日尔    ":["+0100","","尼亚美"],
"Nigeria            尼日利亚":["+0100","","阿布贾"],
"Senegal            塞内加尔":["+0000","","达喀尔"],
"Sierra Leone       塞拉利昂  ":["+0000","","弗里敦(自由城)"],
"Togo               多哥    ":["+0000","","洛美"],
"Western Sahara     西撒哈拉":["+0000","","阿尤恩"]
},
"Africa (Central)   中非": {
"Cameroon           喀麦隆  ":["+0100","","雅温得"],
"Cen.African Rep.   中非共和国":["+0100","","班吉"],
"Congo,Democratic   刚果民主共和国[刚果(金)]":["+0100","","金沙萨"],
"Congo,Republic     刚果共和国[刚果(布)]":["+0100","","布拉柴维尔"],
"Equatorial Guinea  赤道几内亚":["+0100","","马拉博"],
"Gabon              加蓬    ":["+0100","","利伯维尔(自由市)"],
"Sao Tome & Principe圣多美普林西比":["+0000","","圣多美"]
},
"Africa (East)      东非": {
"Burundi            布隆迪  ":["+0200","","布琼布拉"],
"Comoros            科摩罗    ":["+0300","","莫罗尼"],
"Djibouti           吉布提  ":["+0300","","吉布提"],
"Eritrea            厄利垂亚":["+0300","","阿斯马拉"],
"Ethiopia           埃塞俄比亚":["+0300","","亚的斯亚贝巴"],
"Kenya              肯尼亚  ":["+0300","","内罗毕"],
"Madagascar         马达加斯加":["+0300","","塔那那利佛"],
"Malawi             马拉维  ":["+0200","","利隆圭"],
"Mauritius          毛里求斯":["+0400","","路易港"],
"Mayotte(FR)        马约特岛(法)":["+0300","","Mamoutzou"],
"Mozambique         莫桑比克":["+0200","","马普托"],
"Reunion(FR)        留尼旺岛(法)":["+0400","","圣丹尼"],
"Rwanda             卢旺达  ":["+0200","","基加利"],
"Seychelles         塞舌尔  ":["+0300","","维多利亚"],
"Somalia            索马里  ":["+0300","","摩加迪沙"],
"Tanzania           坦桑尼亚":["+0300","","达累斯萨拉姆"],
"Uganda             乌干达  ":["+0300","","坎帕拉"]
},
"Africa (South)     南非": {
"Angola             安哥拉  ":["+0100","","罗安达"],
"Botswana           博茨瓦纳":["+0200","","哈博罗内"],
"Lesotho            莱索托  ":["+0200","","马塞卢"],
"Namibia            纳米比亚":["+0200","09F03|04F03","温得和克"],
"Saint Helena(UK)   圣赫勒拿(英)":["-0100","","詹姆斯敦"],
"South Africa       南非    ":["+0200","","开普敦、普利托里亚"],
"Swaziland          斯威士兰":["+0200","","姆巴巴内"],
"Zambia             赞比亚  ":["+0200","","卢萨卡"],
"Zimbabwe           津巴布韦":["+0200","","哈拉雷"]
},
"Oceania            大洋洲": {
"American Samoa(US) 美属萨摩亚(美)":["-1100","","帕果帕果港"],
"Aus.(Adelaide)     澳大利亚  ":["+0930","10F03|03F03","阿得雷德"],
"Aus.(Brisbane)     澳大利亚  ":["+1000","10F03|03F03","布里斯班"],
"Aus.(Darwin)       澳大利亚  ":["+0930","10F03|03F03","达尔文"],
"Aus.(Hobart)       澳大利亚  ":["+1000","10F03|03F03","荷伯特"],
"Aus.(Perth)        澳大利亚  ":["+0800","10F03|03F03","佩思"],
"Aus.(Sydney)       澳大利亚  ":["+1000","10F03|03F03","悉尼"],
"Cook Islands(NZ)   库克群岛(新西兰)  ":["-1000","","阿瓦鲁阿"],
"Eniwetok           埃尼威托克岛":["-1200","","埃尼威托克岛"],
"Fiji               斐济      ":["+1200","11F03|02L03","苏瓦"],
"Guam               关岛      ":["+1000","","阿加尼亚"],
"Hawaii(US)         夏威夷(美)":["-1000","","檀香山"],
"Kiribati           基里巴斯  ":["+1100","","塔拉瓦"],
"Marshall Is.       马绍尔群岛":["+1200","","马朱罗"],
"Micronesia         密克罗尼西亚联邦":["+1000","","帕利基尔(Palikir)"],
"Midway Is.(US)     中途岛(美)":["-1100","","中途岛"],
"Nauru Rep.         瑙鲁共和国":["+1200","","亚伦"],
"New Calednia(FR)   新克里多尼亚(法)":["+1100","","努美阿"],
"New Zealand        新西兰    ":["+1200","10F03|04F63","奥克兰"],
"New Zealand(CHADT) 新西兰    ":["+1245","10F03|04F63","惠灵顿"],
"Niue(NZ)           纽埃(新)  ":["-1100","","阿洛菲(Alofi)"],
"Nor. Mariana Is.   北马里亚纳群岛(美)":["+1000","","塞班岛"],
"Palau              帕劳群岛(帛琉群岛)      ":["+0900","","科罗尔"],
"Papua New Guinea   巴布亚新几内亚":["+1000","","莫尔斯比港"],
"Pitcairn Is.(UK)   皮特克恩群岛(英)":["-0830","","亚当斯敦"],
"Polynesia(FR)      玻利尼西亚(法)":["-1000","","巴比蒂、塔希提"],
"Solomon Is.        所罗门群岛":["+1100","","霍尼亚拉"],
"Tahiti             塔希提  ":["-1000","","帕佩特"],
"Tokelau(NZ)        托克劳群岛(新)":["-1100","","努库诺努、法考福、阿塔富"],
"Tonga              汤加    ":["+1300","10F63|04F63","努库阿洛法"],
"Tuvalu             图瓦卢  ":["+1200","","富纳富提"],
"Vanuatu            瓦努阿图(新赫布里底群岛)":["+1100","","维拉港"],
"Western Samoa      西萨摩亚":["-1100","","阿皮亚"],
"DataLine           国际换日线 ":["-1200","","国际换日线"]
}
};


/*****************************************************************************
                                    日期计算
*****************************************************************************/

//返回农历 y年的总天数
function lYearDays(y) {
   var i, sum = 348;
   for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
   return(sum+leapDays(y));
}

//返回农历 y年闰月的天数
function leapDays(y) {
   if(leapMonth(y)) return( (lunarInfo[y-1899]&0xf)==0xf? 30: 29);
   else return(0);
}

//返回农历 y年闰哪个月 1-12 , 没闰返回 0
function leapMonth(y) {
   var lm = lunarInfo[y-1900] & 0xf;
   return(lm==0xf?0:lm);
}

//返回农历 y年m月的总天数
function monthDays(y,m) {
   return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
}


//算出农历, 传入日期物件, 返回农历日期物件
//该物件属性有 .year .month .day .isLeap
function Lunar(objDate) {

   var i, leap=0, temp=0;
   var offset   = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;

   for(i=1900; i<2100 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }

   if(offset<0) { offset+=temp; i--; }

   this.year = i;
   //闰哪个月
   leap = leapMonth(i); 
   this.isLeap = false;

   for(i=1; i<13 && offset>0; i++) {
      //闰月
      if(leap>0 && i==(leap+1) && this.isLeap==false)
         { --i; this.isLeap = true; temp = leapDays(this.year); }
      else
         { temp = monthDays(this.year, i); }

      //解除闰月
      if(this.isLeap==true && i==(leap+1)) this.isLeap = false;

      offset -= temp;
   }

   if(offset==0 && leap>0 && i==leap+1)
      if(this.isLeap)
         { this.isLeap = false; }
      else
         { this.isLeap = true; --i; }

   if(offset<0){ offset += temp; --i; }

   this.month = i;
   this.day = offset + 1;
}

//返回公历 y年某m+1月的天数
function solarDays(y,m) {
   if(m==1)
      return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
   else
      return(solarMonth[m]);
}
//输入 offset 返回干支, 0=甲子
function cyclical(num) {
   return(Gan[num%10]+Zhi[num%12]);
}

//阴历属性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
   this.isToday    = false;
   //公历
   this.sYear      = sYear;   //公元年4位数字
   this.sMonth     = sMonth;  //公元月数字
   this.sDay       = sDay;    //公元日数字
   this.week       = week;    //星期, 1个中文
   //农历
   this.lYear      = lYear;   //公元年4位数字
   this.lMonth     = lMonth;  //农历月数字
   this.lDay       = lDay;    //农历日数字
   this.isLeap     = isLeap;  //是否为农历闰月?
   //八字
   this.cYear      = cYear;   //年柱, 2个中文
   this.cMonth     = cMonth;  //月柱, 2个中文
   this.cDay       = cDay;    //日柱, 2个中文

   this.color      = '';

   this.lunarFestival = ''; //农历节日
   this.solarFestival = ''; //公历节日
   this.solarTerms    = ''; //节气
}

//某年的第n个节气为几日(从0小寒起算)
function sTerm(y,n) {
   var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) );
   return(offDate.getUTCDate());
}




//返回阴历物件 (y年,m+1月)
/*
功能说明: 返回整个月的日期资料物件
使用方式: OBJ = new calendar(年,零起算月);
OBJ.length      返回当月最大日
OBJ.firstWeek   返回当月一日星期
由 OBJ[日期].属性名称 即可取得各项值
OBJ[日期].isToday  返回是否为今日 true 或 false
其他 OBJ[日期] 属性参见 calElement() 中的注解
*/
function calendar(y,m) {

   var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;
   //年柱,月柱,日柱
   var cY, cM, cD;
   var lDPOS = new Array(3);
   var n = 0;
   var firstLM = 0;
   //当月一日日期
   sDObj = new Date(y,m,1,0,0,0,0);    
   //公历当月天数
   this.length    = solarDays(y,m); 
   //公历当月1日星期几
   this.firstWeek = sDObj.getDay();    

   //年柱1900年立春後为庚子年(60进制36)
   if(m<2) cY=cyclical(y-1900+36-1);
   else cY=cyclical(y-1900+36);
   //立春日期
   var term2=sTerm(y,2); 

   //月柱 1900年1月小寒以前为 丙子月(60进制12)
   //返回当月「节」为几日开始
   var firstNode = sTerm(y,m*2) 
   cM = cyclical((y-1900)*12+m+12);

   //当月一日与 1900/1/1 相差天数
   //1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)
   var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;

   for(var i=0;i<this.length;i++) {

      if(lD>lX) {
         sDObj = new Date(y,m,i+1);    //当月一日日期
         lDObj = new Lunar(sDObj);     //农历
         lY    = lDObj.year;           //农历年
         lM    = lDObj.month;          //农历月
         lD    = lDObj.day;            //农历日
         lL    = lDObj.isLeap;         //农历是否闰月
         lX    = lL? leapDays(lY): monthDays(lY,lM); //农历当月最後一天

         if(n==0) firstLM = lM;
         lDPOS[n++] = i-lD+1;
      }

      //依节气调整二月分的年柱, 以立春为界
      if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
      //依节气月柱, 以「节」为界
      if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);
      //日柱
      cD = cyclical(dayCyclical+i);

      //sYear,sMonth,sDay,week,
      //lYear,lMonth,lDay,isLeap,
      //cYear,cMonth,cDay
      this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7], lY, lM, lD++, lL, cY ,cM, cD );
   }

   //节气
   tmp1=sTerm(y,m*2  )-1;
   tmp2=sTerm(y,m*2+1)-1;
   this[tmp1].solarTerms = solarTerm[m*2];
   this[tmp2].solarTerms = solarTerm[m*2+1];
   //清明颜色
   if(m==3) this[tmp1].color = '#ff0000'; 

   //公历节日
   for(i in sFtv)
      if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
         if(Number(RegExp.$1)==(m+1)) {
            if(Number(RegExp.$2)<=this.length){
              this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
              if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = '#ff0000';
            }
         }

   //月周节日
   for(i in wFtv)
      if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
         if(Number(RegExp.$1)==(m+1)) {
            tmp1=Number(RegExp.$2);
            tmp2=Number(RegExp.$3);
            if(tmp1<5)
               this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
            else {
               tmp1 -= 5;
               tmp3 = (this.firstWeek+this.length-1)%7; //当月最後一天星期?
               this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' ';
            }
         }

   //农历节日
   for(i in lFtv)
      if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
         tmp1=Number(RegExp.$1)-firstLM;
         if(tmp1==-11) tmp1=1;
         if(tmp1 >=0 && tmp1<n) {
            tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1;
            if( tmp2 >= 0 && tmp2<this.length && this[tmp2].isLeap!=true) {
               this[tmp2].lunarFestival += RegExp.$4 + ' ';
               if(RegExp.$3=='*') this[tmp2].color = '#ff0000';
            }
         }
      }


   //复活节只出现在3或4月
   if(m==2 || m==3) {
      var estDay = new easter(y);
      if(m == estDay.m)
         this[estDay.d-1].solarFestival = this[estDay.d-1].solarFestival+' 复活节 Easter Sunday';
   }


//disable,birthday//	   if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5');

   //黑色星期五
   if((this.firstWeek+12)%7==5)
      this[12].solarFestival += '黑色星期五';

//disable,birthday//	   if(m==8) this[13].solarFestival = this[13].solarFestival+unescape('%20%u795D%u8D3A%u6885%u7AF9%u677E%u751F%u65E5%u5FEB%u4E50%u003A%u0029');

   //今日
   if(y==tY && m==tM) this[tD-1].isToday = true;
}

//返回该年的复活节(春分後第一次满月周後的第一主日)
function easter(y) {
   var term2=sTerm(y,5); //取得春分日期
   var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0)); //取得春分的公历日期物件(春分一定出现在3月)
   var lDayTerm2 = new Lunar(dayTerm2); //取得取得春分农历

   if(lDayTerm2.day<15) //取得下个月圆的相差天数
      var lMlen= 15-lDayTerm2.day;
   else
      var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15;

   //一天等於 1000*60*60*24 = 86400000 毫秒
   var l15 = new Date(dayTerm2.getTime() + 86400000*lMlen ); //求出第一次月圆为公历几日
   var dayEaster = new Date(l15.getTime() + 86400000*( 7-l15.getUTCDay() ) ); //求出下个周日

   this.m = dayEaster.getUTCMonth();
   this.d = dayEaster.getUTCDate();
}

//中文日期
function cDay(d){
   var s;

   switch (d) {
      case 10:
         s = '初十'; break;
      case 20:
         s = '二十'; break;
         break;
      case 30:
         s = '三十'; break;
         break;
      default :
         s = nStr2[Math.floor(d/10)];
         s += nStr1[d%10];
   }
   return(s);
}

///////////////////////////////////////////////////////////////////////////////

var cld;

function drawCld(SY,SM) {
   var i,sD,s,size;
   cld = new calendar(SY,SM);

   if(SY>1874 && SY<1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874);
   if(SY>1908 && SY<1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908);
   if(SY>1911 && SY<1950) yDisplay = '民国' + (((SY-1911)==1)?'元':SY-1911);
   if(SY>1948) yDisplay = '建国' + (((SY-1949)==1)?'元':SY-1949);

   $("GZ").innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'年】';

   $("YMBG").innerHTML = SY + "<br />" + monthName[SM];

   for(i=0;i<42;i++) {

      gObj=$('GD'+ i);
      sObj=$('SD'+ i);
      lObj=$('LD'+ i);


      gObj.className = '';

      sD = i - cld.firstWeek;
      //日期内
      if(sD>-1 && sD<cld.length) { 
         sObj.innerHTML = sD+1;
		 //今日颜色
         if(cld[sD].isToday) {
			 gObj.className = 'todayStyle'; 
		 }
		 //法定假日以及周末颜色
		 var weekend = sObj.className;
		 if (weekend.indexOf("weekendStyle") != -1) {
			sObj.style.color = "#ff0000";
		 } else {
         	sObj.style.color = cld[sD].color; 
		 }
		 //显示农历月
         if(cld[sD].lDay==1) {
            if(cld[sD].isLeap) {
			  //闰月
              lObj.innerHTML = '<b>闰'+cld[sD].lMonth+'月' + (leapDays(cld[sD].lYear)==29?'小':'大')+'</b>';
			} else { 
			  //非闰月
              lObj.innerHTML = '<b>'+cld[sD].lMonth+'月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
			}
	     } else { 
		    //显示农历日
            lObj.innerHTML = cDay(cld[sD].lDay);
		 }
         s=cld[sD].lunarFestival;
		 //农历节日
         if(s.length>0) { 
            if(s.length>6) {
				s = s.substr(0, 4)+'…';
			}
            s = s.fontcolor('#ff0000');
         } else { 
		    //公历节日
            s=cld[sD].solarFestival;
            if(s.length>0) {
               size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
               if(s.length>size+2) s = s.substr(0, size)+'…';
               s=(s=='黑色星期五')?s.fontcolor('black'):s.fontcolor('blue');
            }
            else { //廿四节气
               s=cld[sD].solarTerms;
               if(s.length>0) s = s.fontcolor('limegreen');
            }
         }

         if(cld[sD].solarTerms=='清明') {
			 s = '清明节'.fontcolor('#ff0000');
		 }

         if(s.length>0) {
			 lObj.innerHTML = s;
		 }
      } else {
		 //非日期
         sObj.innerHTML = '';
         lObj.innerHTML = '';
      }
   }
}


function changeCld() {
   var y,m;
   y=$("SY").selectedIndex+1900;
   m=$("SM").selectedIndex;
   drawCld(y,m);
}

function pushBtm(K) {
   switch (K){
      case 'YU' :
         if($("SY").selectedIndex>0) $("SY").selectedIndex--;
         break;
      case 'YD' :
         if($("SY").selectedIndex<200) $("SY").selectedIndex++;
         break;
      case 'MU' :
         if($("SM").selectedIndex>0) {
            $("SM").selectedIndex--;
         }
         else {
            $("SM").selectedIndex=11;
            if($("SY").selectedIndex>0) $("SY").selectedIndex--;
         }
         break;
      case 'MD' :
         if($("SM").selectedIndex<11) {
            $("SM").selectedIndex++;
         }
         else {
            $("SM").selectedIndex=0;
            if($("SY").selectedIndex<200) $("SY").selectedIndex++;
         }
         break;
      default :
         $("SY").selectedIndex=tY-1900;
         $("SM").selectedIndex=tM;
   }
   changeCld();

   return false;

}

var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////

var width = "130";
var offsetx = 2;
var offsety = 8;

var x = 0;
var y = 0;
var sw = 0;
var cnt = 0;

var dStyle;

//显示详细日期资料
function mOvr(v) {
   var s,festival,spcday;
   var sObj=$('SD'+ v);
   var d=sObj.innerHTML-1;

    //sYear,sMonth,sDay,week,
    //lYear,lMonth,lDay,isLeap,
    //cYear,cMonth,cDay

   if(sObj.innerHTML!='') {
      spcday=cld[d].sMonth==3 && cld[d].sDay==3*7?unescape('%20%u6797%u6D35%u8CE2%u7684%u751F%u65E5'):'';
      spcday=cld[d].sMonth==3*3 && cld[d].sDay==2*7?unescape('%20%u795D%u8D3A%u6885%u7AF9%u677E%u751F%u65E5%u5FEB%u4E50%u003A%u0029'):'';

      if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '' && spcday=='') {
         festival = '';
	  } else {
         festival = '<div class="detail_msg">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+' '+spcday+'</div>';
	  }

      s = '<div class="detail_body">';
	  s += '<div>' + cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week + '</div>';
	  s += '<div>农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</div>';
      s += '<div>'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</div>';
      s += festival;
	  s += '</div>';
      $("detail").innerHTML = s;
	  document.body.onmousemove = function(e) {
		mEvn(e);
	  }
   }
}

//清除详细日期资料
function mOut() {
   dStyle.display = "none";
   document.body.onmousemove = null;
}

//取得位置
function mEvn(e) {
	if (window.innerHeight) {
		var scrollpos = window.pageYOffset
	}else if (document.documentElement && document.documentElement.scrollTop) {
		var scrollpos = document.documentElement.scrollTop
	}else if (document.body) {
		var scrollpos = document.body.scrollTop;
	}
	e=e||window.event;
	dStyle.left = -70 + (e.clientX-x)+"px";
	dStyle.top = 20 + (e.clientY-y+scrollpos)+"px";
	dStyle.display = "block";
}


/*****************************************************************************
                                世界时间计算
*****************************************************************************/
var OneHour = 60*60*1000;
var OneDay = OneHour*24;
var TimezoneOffset = Today.getTimezoneOffset()*60*1000;

function showUTC(objD) {
   var dn,s;
   var hh = objD.getUTCHours();
   var mm = objD.getUTCMinutes();
   var ss = objD.getUTCSeconds();
   s = objD.getUTCFullYear() + "年" + (objD.getUTCMonth() + 1) + "月" + objD.getUTCDate() +"日 ("+ nStr1[objD.getUTCDay()] +")";

   if(hh>12) { hh = hh-12; dn = '下午'; }
   else dn = '上午';

   if(hh<10) hh = '0' + hh;
   if(mm<10) mm = '0' + mm;
   if(ss<10) ss = '0' + ss;

   s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
   return(s);
}

function showLocale(objD) {
   var dn,s;
   var hh = objD.getHours();
   var mm = objD.getMinutes();
   var ss = objD.getSeconds();
   s = objD.getFullYear() + "年" + (objD.getMonth() + 1) + "月" + objD.getDate() +"日 ("+ nStr1[objD.getDay()] +")";

   if(hh>12) { hh = hh-12; dn = '下午'; }
   else dn = '上午';

   if(hh<10) hh = '0' + hh;
   if(mm<10) mm = '0' + mm;
   if(ss<10) ss = '0' + ss;

   s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
   return(s);
}

//传入时差字串, 返回偏移之正负毫秒
function parseOffset(s) {
   var sign,hh,mm,v;
   sign = s.substr(0,1)=='-'?-1:1;
   hh = Math.floor(s.substr(1,2));
   mm = Math.floor(s.substr(3,2));
   v = sign*(hh*60+mm)*60*1000;
   return(v);
}

//返回UTC日期物件 (年,月-1,第几个星期几,几点)
function getWeekDay(y,m,nd,w,h){
   var d,d2,w1;
   if(nd>0){
      d = new Date(Date.UTC(y, m, 1));
      w1 = d.getUTCDay();
      d2 = new Date( d.getTime() + ((w<w1? w+7-w1 : w-w1 )+(nd-1)*7   )*OneDay + h*OneHour);
   }
   else {
      nd = Math.abs(nd);
      d = new Date( Date.UTC(y, m+1, 1)  - OneDay );
      w1 = d.getUTCDay();
      d2 = new Date( d.getTime() + (  (w>w1? w-7-w1 : w-w1 )-(nd-1)*7   )*OneDay + h*OneHour);
   }
   return(d2);
}

//传入某时间值, 日光节约字串 返回 true 或 false
function isDaylightSaving(d,strDS) {

   if(strDS == '') return(false);

   var m1,n1,w1,t1;
   var m2,n2,w2,t2;
   with(Math) {
      m1 = floor(strDS.substr(0,2))-1; //月
      w1 = floor(strDS.substr(3,1));   //星
      t1 = floor(strDS.substr(4,1));   //时
      m2 = floor(strDS.substr(6,2))-1;
      w2 = floor(strDS.substr(9,1));
      t2 = floor(strDS.substr(10,1));
   }

   switch(strDS.substr(2,1)){ //F L 头或尾
      case 'F': n1=1; break;
      case 'L': n1=-1; break;
      default : n1=0; break;
   }

   switch(strDS.substr(8,1)){
      case 'F': n2=1; break;
      case 'L': n2=-1; break;
      default : n2=0; break;
   }


   var d1, d2, re;

   if(n1==0)
      d1 = new Date(Date.UTC(d.getUTCFullYear(), m1, Math.floor(strDS.substr(2,2)),t1));
   else
      d1 = getWeekDay(d.getUTCFullYear(),m1,n1,w1,t1);

   if(n2==0)
      d2 = new Date(Date.UTC(d.getUTCFullYear(), m2, Math.floor(strDS.substr(8,2)),t2));
   else
      d2 = getWeekDay(d.getUTCFullYear(),m2,n2,w2,t2);

   if(d2>d1)
      re = (d>d1 && d<d2)? true: false;
   else
      re = (d>d1 || d<d2)? true: false;

   return(re);
}

var isDS = false;

//计算全球时间
function getGlobeTime() {
   var d,s;
   d = new Date();
   d.setTime(d.getTime()+parseOffset(objTimeZone[0]));
   isDS=isDaylightSaving(d,objTimeZone[1]);
   if(isDS) d.setTime(d.getTime()+OneHour);
   return(showUTC(d));
}

var objTimeZone;
var objContinentMenu;
var objCountryMenu;

function tick() {
   var today;
   today = new Date();
   $("LocalTime").innerHTML = showLocale(today);
   $("GlobeTime").innerHTML = getGlobeTime();
   window.setTimeout("tick()", 1000);
}

//指定自定索引时区
function setTZ(a,c){
   objContinentMenu.options[a].selected=true;
   chContinent();
   objCountryMenu.options[c].selected=true;
   chCountry();
}

//变更区域
function chContinent() {
   var key,i;
   continent = objContinentMenu.options[objContinentMenu.selectedIndex].value;
   for (var i = objCountryMenu.options.length-1; i >= 0; i--)
      objCountryMenu[0]=null;

   for (key in timeData[continent])
      objCountryMenu.options[objCountryMenu.options.length]=new Option(key, key);

   objCountryMenu.options[0].selected=true;
   chCountry();
}

//变更国家
function chCountry() {
   var txtContinent = objContinentMenu.options[objContinentMenu.selectedIndex].value;
   var txtCountry = objCountryMenu.options[objCountryMenu.selectedIndex].value;

   objTimeZone = timeData[txtContinent][txtCountry];

   getGlobeTime();

   //地图位移
   $("City").innerHTML = (isDS==true?"● ":'') + objTimeZone[2]; 
   //首都
   var pos = Math.floor(objTimeZone[0].substr(0,3));
   if(pos<0) pos+=24;
   pos*=-10;
   $("world").style.left = pos;

}

function setCookie(name,value) {
   var today = new Date();
   var expires = new Date();
   expires.setTime(today.getTime() + 1000*60*60*24*365);
   document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString();
}

function getCookie(Name) {
   var search = Name + "=";
   if(document.cookie.length > 0) {
      offset = document.cookie.indexOf(search);
      if(offset != -1) {
         offset += search.length;
         end = document.cookie.indexOf(";", offset);
         if(end == -1) end = document.cookie.length;
         return unescape(document.cookie.substring(offset, end));
      }
      else return('');
   }
   else return('');
}

///////////////////////////////////////////////////////////////////////////

function initialize() {
   var key;

   objContinentMenu=$("continentMenu");
   objCountryMenu=$("countryMenu");

   for (key in timeData) {
      objContinentMenu[objContinentMenu.length]=new Option(key, key);
   }

   var TZ1 = getCookie('TZ1');
   var TZ2 = getCookie('TZ2');

	//默认时区资料更改
   if(TZ1=='') {TZ1=0; TZ2=3;}
   setTZ(TZ1,TZ2);

   tick();

   //阴历
   dStyle = $("detail").style;
   $("SY").selectedIndex=tY-1900;
   $("SM").selectedIndex=tM;
   drawCld(tY,tM);

}

function terminate() {
   setCookie("TZ1",objContinentMenu.selectedIndex);
   setCookie("TZ2",objCountryMenu.selectedIndex);
}

function $(id) {
	return document.getElementById(id);	
}
</script>
<style type="text/css">
html, body { height:100%; margin:0; padding:0; font-size:12px; }
#detail { z-index:3; position:absolute; width:140px; }
.detail_body { background:#006699; border:2px solid #006699; color:#ffffff; padding:3px 3px; }
.detail_msg { padding:3px 3px; background:#ffffff; color:#000000; }
.todayStyle { background:#cccccc; }
.weekendStyle {}
.now_time div { line-height:22px; font-weight:bold; }
.now_time span { font-weight:normal; }
.world_map { font-family:Wingdings; width:240px; overflow:hidden; position:relative; text-align:center; margin:10px 0px; border:1px solid #cccccc; }
.world_map #world { font-family:Webdings; font-size:185px; left:0px; color:#090; position:relative; }
.area_select { width:240px; margin:3px 0px; }
.ymbg { z-index:-1; position:absolute; margin-top:20px; margin-left:80px; }
.ymbg #YMBG { font-size:120px; color:#f0f0f0; font-weight:bold; font-family:Arial Black; text-align:center; }
.table_title { text-align:left; }
.table_week { background:#f0f0f0; font-size:14px; }
.table_week th { padding:5px 0px; }
.table_day td { border:1px solid #f0f0f0; height:50px; }
.day_num { width:72px; font-weight:bold; font-family:Arial Black; text-align:center; font-size:22px; cursor:pointer; }
.day_msg { width:72px; overflow:hidden; text-align:center; font-size:12px; }
.table_jump { text-align:center; margin-top:60px; }
.table_jump button { margin:3px 0px; width:30px; font-weight:bold; font-size:12px; }
</style>
</head>
<body onload="initialize()" onunload="terminate()">
<div id="detail"></div>
<table border="0" align="center" cellpadding="5" cellspacing="3">
  <tr>
    <td valign="top"><div class="now_time">
        <div>本地时间</div>
        <div><span id="LocalTime">0000年0月0日 午 00:00:00</span></div>
        <div><span id="City">中国</span></div>
        <div><span id="GlobeTime">0000年0月0日 午 00:00:00</span></div>
      </div>
      <div class="world_map">
        <div>&Uacute;</div>
        <div id="world">&#251;&#251;</div>
        <div>&Ugrave;</div>
      </div>
      <div>
        <select onchange="chContinent()" id="continentMenu" class="area_select">
        </select>
      </div>
      <div>
        <select onchange="chCountry()" id="countryMenu" class="area_select">
        </select>
      </div></td>
    <td align="center" valign="top"><div class="ymbg"><span id="YMBG">&nbsp;</span></div>
      <table border="0" align="center" cellpadding="3" cellspacing="2">
        <tr class="table_title">
          <td colspan="7">公元
            <select onchange="changeCld()" id="SY">
              <script language="JavaScript" type="text/javascript">
          			for(var i=1900; i < 2101; i++) {
						document.write('<option value="'+i+'">'+i+'</option>');
					}
          		</script>
            </select>
            年
            <select onchange="changeCld()" id="SM">
              <script language="JavaScript" type="text/javascript">
          			for(var i=1; i < 13; i++) {
						document.write('<option value="'+i+'">'+i+'</option>');
					}
          		</script>
            </select>
            月<span id="GZ"></span></td>
        </tr>
        <tr class="table_week">
          <th style="color:#ff0000;">日</th>
          <th>一</th>
          <th>二</th>
          <th>三</th>
          <th>四</th>
          <th>五</th>
          <th style="color:#008000;">六</th>
        </tr>
        <script type="text/javascript">
          var gNum, weekend;
          for(var i=0; i<6; i++) {
             var htm = '<tr class="table_day">';
             for(var j=0; j<7; j++) {
                if(j == 0 || j == 6) { 
					weekend = ' weekendStyle'; 
				} else {
					weekend = "";	
				}
				gNum = i*7+j
				htm += '<td id="GD'+gNum+'" onMouseOver="mOvr('+gNum+')" onMouseOut="mOut()">';
				htm += '<div class="day_num'+weekend+'" id="SD'+gNum+'"></div>';
				htm += '<div class="day_msg" id="LD'+gNum+'"></span>';
				htm += '</td>';
             }
			 htm += '</tr>';
             document.write(htm);
          }
          </script>
      </table></td>
    <td valign="top"><div class="table_jump">
        <div>年</div>
        <div>
          <button onclick="pushBtm('YD')">▲</button>
        </div>
        <div>
          <button onclick="pushBtm('YU')">▼</button>
        </div>
        <br />
        <div>月</div>
        <div>
          <button onclick="pushBtm('MD')">▲</button>
        </div>
        <div>
          <button onclick="pushBtm('MU')">▼</button>
        </div>
        <br />
        <div>
          <button onclick="pushBtm('')">今<br />
          日</button>
        </div>
      </div></td>
  </tr>
</table>
<script type="text/javascript">
</script>
</body>
</html>
